﻿#ifndef TABLEVIEWWITHLOADER_H
#define TABLEVIEWWITHLOADER_H

#include <QTableView>
#include <QStandardItemModel>
#include <QVector>
#include "Delegate.h"

/**
 * @brief 支持懒加载的表格视图
 * 继承自QTableView，实现了可见区域变化检测和懒加载功能
 */
class TableViewWithLoader : public QTableView
{
    Q_OBJECT

public:
    /**
     * @brief 构造函数
     * @param parent 父窗口
     */
    explicit TableViewWithLoader(QWidget *parent = nullptr);

    /**
     * @brief 设置模型
     * @param model 数据模型
     */
    void setModel(QAbstractItemModel *model) override;

signals:
    /**
     * @brief 可见范围变化信号
     * @param start 起始行
     * @param end 结束行
     */
    void visibleRangeChanged(int start, int end);

protected:
    /**
     * @brief 重写滚动内容方法
     * @param dx X方向滚动距离
     * @param dy Y方向滚动距离
     */
    void scrollContentsBy(int dx, int dy) override;

private:
    /**
     * @brief 更新可见区域
     */
    void updateVisibleArea();

    QVector<bool> m_visibleRows; // 记录每行是否可见
};

#endif // TABLEVIEWWITHLOADER_H
